我們今天可以來做會員系統
雖然自己的網站用戶可能只有自己,
但畢竟跟來訪的遊客相比來說,還是會有權限之分
所以必須要有判斷的依據
那我們今天也是手刻
先從基本的 CRUD 開始
我們不需要 show 跟 destroy
resources :users, except:[:index, :destroy]
做一個 User 的 model
欄位就簡短的給 1.名字 2.信箱 3.密碼
這裡要用email來做唯一値,以防大家用同樣的信箱來註冊
或是可以當成 user 除了 id 以外的搜尋主鍵
Model:user
- name : string
- email : string
- password:string
#uniq 不能重複
rails g model User name email:string:uniq password
↓ table下面會長出 ↓
#加索引, unique唯一值
add_index :users, :email, unique: true
Model驗證 email 格式
validates :email, presence: true, #必填
uniqueness: true, #不重複寫入
format: { # 格式
with: URI::MailTo::EMAIL_REGEXP,
message: '格式有誤'
}
rails g controller users
現在只要做註冊跟編輯,
而註冊其實就是創造使用者
before_action :set_user, only: [:edit, :update]
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
rederect_to root_path, notice: '註冊成功'
else
render :new
end
end
def edit
end
def update
@user.update(user_params)
rederect_to root_path , notice:'更新成功!'
end
private
def user_params
params.require(:user).permit(:name, :email, :password)
end
def set_user
@user = User.find(params[:id])
end
view 跟文章的表單差不多,也是使用 form helper ,
然後表單做一個 partial render
<%= render 'form' %>
<%= render 'form' %>
<%= form_with(model: @user, data: { turbo: false }) do |f| %>
<div>
<%= f.label :name%>
<%= f.text_field :name%>
</div>
<div>
<%= f.label :email%>
<%= f.email_field :email%>
</div>
<div>
<%= f.label :password%>
<%= f.password_field :password%>
</div>
<%= f.submit '註冊帳號' %>
<% end %>
這樣我們就完成註冊會員的功能了!
明天再繼續介紹 「會員登入」